home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- #
- # Start/stop DHCP service
-
- . /etc/system.cfg
- . /etc/colors
- . /etc/chat.pwd
- . /etc/live.cfg
-
-
- fn2() { ps | sed -n '/ dhcpd/P'; }
- stp() {
- [ "`fn2`" ] || return
- echo -n "Stopping dhcpd... "
- killall dhcpd -15
- sleep 2
- killall dhcpd
- =
- }
- fn1() {
- eval a='$'INTNAME$1 b='$'BRDCAST$1 c='$'NETWORK$1
- eval d='$'NETMASK$1 e='$'IPRANGE$1 f='$'IPADDR$1
- [ "$a" -a "$b" -a "$c" -a "$d" -a "$e" -a "$f" ] || return
- [ "`ifconfig $a 2>/dev/null | sed -n /UP/P`" ] || return
- INT="$INT $a"
- cat >>/etc/dhcpd.conf <<-EOF
- subnet $c netmask $d {
- range $e;
- option subnet-mask $d;
- option broadcast-address $b;
- option routers $f;
- EOF
- [ "$ENADNS" = n ] && f="$DNSADDR"
- [ "$DNSADDR1" ] && f="$f,$DNSADDR1"
- echo "option domain-name-servers $f;" >>/etc/dhcpd.conf
- echo "}" >>/etc/dhcpd.conf
- }
- str() {
- [ "$ENADHCP" = n -o "`fn2`" ] && return
- set -- `echo $LIZTIME | sed s/,/\ /g`
- cat >/etc/dhcpd.conf <<-EOF
- option domain-name "$DOMAIN";
- default-lease-time ${1:-345600};
- max-lease-time ${2:-345600};
-
- EOF
- [ "$WINSADDR" ] && cat >>/etc/dhcpd.conf <<-EOF
- option netbios-name-servers $WINSADDR;
- option netbios-dd-server $WINSADDR;
- option netbios-node-type 8;
-
- EOF
- [ "$USEDHCP0" = n ] && fn1 0
- for i in 1 2 3 4 5 6 7 8 9; do fn1 $i; done
- cat /boot/etc/dhcp.cfg 2>/dev/null | sed '/^#.*$/d' >>/etc/dhcpd.conf
- [ "$INT" ] || return 2
- INT=`echo $INT | sed s/:.//g`
- [ "$BOOTMOD" = debug -o "$LOGDHCP" = y ] && DBG="-d"
- echo -n "Starting dhcpd... $CR"
- dhcpd -q $INT
- chmod 644 /etc/dhcpd.leases
- = $? "Done $CC $INT"
- }
-
- case "$1" in
- start) str;;
- stop) stp;;
- restart|newip) stp;str;;
- status) if [ "`fn2`" ]
- then echo "Running dhcpd:"; fn2
- else echo No running dhcpd
- fi;;
- esac
-